home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / CodeFragments.p < prev    next >
Text File  |  1996-05-01  |  19KB  |  565 lines

  1. {
  2.      File:        CodeFragments.p
  3.  
  4.      Contains:    Public Code Fragment Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7 and System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {
  19.  *
  20.  ===========================================================================================
  21.  The Code Fragment Manager API
  22.  =============================
  23. }
  24. {$IFC UNDEFINED UsingIncludes}
  25. {$SETC UsingIncludes := 0}
  26. {$ENDC}
  27.  
  28. {$IFC NOT UsingIncludes}
  29.  UNIT CodeFragments;
  30.  INTERFACE
  31. {$ENDC}
  32.  
  33. {$IFC UNDEFINED __CODEFRAGMENTS__}
  34. {$SETC __CODEFRAGMENTS__ := 1}
  35.  
  36. {$I+}
  37. {$SETC CodeFragmentsIncludes := UsingIncludes}
  38. {$SETC UsingIncludes := 1}
  39.  
  40. {$IFC UNDEFINED __TYPES__}
  41. {$I Types.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __FILES__}
  44. {$I Files.p}
  45. {$ENDC}
  46. {$IFC FOR_SYSTEM8_PREEMPTIVE }
  47. {$IFC UNDEFINED __KERNEL__}
  48. {$I Kernel.p}
  49. {$ENDC}
  50. {$IFC UNDEFINED __FILEMANAGERTYPES__}
  51. {$I FileManagerTypes.p}
  52. {$ENDC}
  53. {$IFC UNDEFINED __TEXTOBJECTS__}
  54. {$I TextObjects.p}
  55. {$ENDC}
  56. {$ENDC}
  57.  
  58. {$PUSH}
  59. {$ALIGN MAC68K}
  60. {$LibExport+}
  61.  
  62. {
  63.  ß
  64.  ===========================================================================================
  65.  Universal types and constants
  66.  =============================
  67. }
  68. {$IFC FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE }
  69. {
  70.  ----------------------------------------------------------------------------
  71.  These declarations are for System 7 and all System 8 execution environments.
  72. }
  73.  
  74. CONST
  75.     kCFragResourceType            = 'cfrg';
  76.     kCFragResourceID            = 0;
  77.     kCFragLibraryFileType        = 'shlb';
  78.     kCFragAllFileTypes            = $FFFFFFFF;
  79.  
  80.  
  81. TYPE
  82.     CFragArchitecture                    = OSType;
  83.  
  84. CONST
  85.     kPowerPCCFragArch            = 'pwpc';
  86.     kMotorola68KCFragArch        = 'm68k';
  87.     kAnyCFragArch                = $3F3F3F3F;
  88.  
  89. {$IFC GENERATINGPOWERPC }
  90.     kCompiledCFragArch            = 'pwpc';
  91.  
  92. {$ENDC}
  93. {$IFC GENERATING68K }
  94.     kCompiledCFragArch            = 'm68k';
  95.  
  96. {$ENDC}
  97.  
  98. TYPE
  99.     CFragVersionNumber                    = UInt32;
  100.  
  101. CONST
  102.     kNullCFragVersion            = 0;
  103.     kWildcardCFragVersion        = $FFFFFFFF;
  104.  
  105.  
  106. TYPE
  107.     CFragUsage                            = UInt8;
  108.  
  109. CONST
  110.     kImportLibraryCFrag            = 0;                            {  Standard CFM import library. }
  111.     kApplicationCFrag            = 1;                            {  Macintosh application. }
  112.     kDropInAdditionCFrag        = 2;                            {  Private extension to an application or library. }
  113.  
  114.     kIsCompleteCFrag            = 0;                            {  A "base" fragment, not an update. }
  115.     kFirstCFragUpdate            = 1;                            {  The first update, others are numbered 2, 3, ... }
  116.  
  117.     kCFragGoesToEOF                = 0;
  118.  
  119.  
  120. TYPE
  121.     CFragLocatorKind                    = UInt8;
  122.  
  123. CONST
  124.     kMemoryCFragLocator            = 0;                            {  Container is already addressable. }
  125.     kDataForkCFragLocator        = 1;                            {  Container is in a file's data fork. }
  126.     kResourceCFragLocator        = 2;                            {  Container is in a file's resource fork. }
  127.  
  128. {
  129.  --------------------------------------------------------------------------------------
  130.  A 'cfrg' resource consists of a header followed by a sequence of variable length
  131.  members.  The constant kDefaultCFragNameLen only provides for a legal ANSI declaration
  132.  and for a reasonable display in a debugger.  The actual name field is cut to fit.
  133.  There may be "extensions" after the name, the memberSize field includes them.  The
  134.  general form of an extension is a 16 bit type code followed by a 16 bit size in bytes.
  135.  Only one standard extension type is defined at present, it is used by SOM's searching
  136.  mechanism.
  137. }
  138.  
  139. TYPE
  140.     CFragUsage1UnionPtr = ^CFragUsage1Union;
  141.     CFragUsage1Union = RECORD
  142.         CASE INTEGER OF
  143.                                                                         {  ! Meaning differs depending on value of "usage". }
  144.         0: (
  145.             appStackSize:        UInt32;                                    {  If the fragment is an application. (Not used by CFM!) }
  146.             );
  147.     END;
  148.  
  149.     CFragUsage2UnionPtr = ^CFragUsage2Union;
  150.     CFragUsage2Union = RECORD
  151.         CASE INTEGER OF
  152.                                                                         {  ! Meaning differs depending on value of "usage". }
  153.         0: (
  154.             appSubdirID:        SInt16;                                    {  If the fragment is an application. }
  155.             );
  156.     END;
  157.  
  158.     CFragWhere1UnionPtr = ^CFragWhere1Union;
  159.     CFragWhere1Union = RECORD
  160.         CASE INTEGER OF
  161.                                                                         {  ! Meaning differs depending on value of "where". }
  162.         0: (
  163.             spaceID:            UInt32;                                    {  If the fragment is in memory.  (Actually an AddressSpaceID.) }
  164.             );
  165.         1: (
  166.             forkKind:            OSType;                                    {  If the fragment is in an arbitrary byte stream fork. }
  167.             );
  168.     END;
  169.  
  170.     CFragWhere2UnionPtr = ^CFragWhere2Union;
  171.     CFragWhere2Union = RECORD
  172.         CASE INTEGER OF
  173.                                                                         {  ! Meaning differs depending on value of "where". }
  174.         0: (
  175.             forkInstance:        UInt16;                                    {  If the fragment is in an arbitrary byte stream fork. }
  176.             );
  177.     END;
  178.  
  179.  
  180. CONST
  181.     kDefaultCFragNameLen        = 16;
  182.  
  183.  
  184. TYPE
  185.     CFragResourceMemberPtr = ^CFragResourceMember;
  186.     CFragResourceMember = RECORD
  187.         architecture:            CFragArchitecture;
  188.         reservedA:                UInt16;                                    {  ! Must be zero! }
  189.         reservedB:                SInt8;                                    {  ! Must be zero! }
  190.         updateLevel:            SInt8;
  191.         currentVersion:            CFragVersionNumber;
  192.         oldDefVersion:            CFragVersionNumber;
  193.         uUsage1:                CFragUsage1Union;
  194.         uUsage2:                CFragUsage2Union;
  195.         usage:                    SInt8;
  196.         where:                    SInt8;
  197.         offset:                    UInt32;
  198.         length:                    UInt32;
  199.         uWhere1:                CFragWhere1Union;
  200.         uWhere2:                CFragWhere2Union;
  201.         extensionCount:            UInt16;                                    {  The number of extensions beyond the name. }
  202.         memberSize:                UInt16;                                    {  Size in bytes, includes all extensions. }
  203.         name:                    PACKED ARRAY [0..15] OF UInt8;            {  ! Actually a sized PString. }
  204.     END;
  205.  
  206.     CFragResourceExtensionHeaderPtr = ^CFragResourceExtensionHeader;
  207.     CFragResourceExtensionHeader = RECORD
  208.         extensionKind:            UInt16;
  209.         extensionSize:            UInt16;
  210.     END;
  211.  
  212.     CFragResourceSearchExtensionPtr = ^CFragResourceSearchExtension;
  213.     CFragResourceSearchExtension = RECORD
  214.         header:                    CFragResourceExtensionHeader;
  215.         libKind:                OSType;
  216.         qualifiers:                SInt8;                                    {  ! Actually four PStrings. }
  217.     END;
  218.  
  219.  
  220. CONST
  221.     kCFragResourceSearchExtensionKind = $30EE;
  222.  
  223.  
  224. TYPE
  225.     CFragResourcePtr = ^CFragResource;
  226.     CFragResource = RECORD
  227.         reservedA:                UInt32;                                    {  ! Must be zero! }
  228.         reservedB:                UInt32;                                    {  ! Must be zero! }
  229.         reservedC:                UInt16;                                    {  ! Must be zero! }
  230.         version:                UInt16;
  231.         reservedD:                UInt32;                                    {  ! Must be zero! }
  232.         reservedE:                UInt32;                                    {  ! Must be zero! }
  233.         reservedF:                UInt32;                                    {  ! Must be zero! }
  234.         reservedG:                UInt32;                                    {  ! Must be zero! }
  235.         reservedH:                UInt16;                                    {  ! Must be zero! }
  236.         memberCount:            UInt16;
  237.         firstMember:            CFragResourceMember;
  238.     END;
  239.  
  240.  
  241. CONST
  242.     kCurrCFragResourceVersion    = 1;
  243.  
  244.  
  245. TYPE
  246.     CFragConnectionID = ^LONGINT;
  247.     CFragClosureID = ^LONGINT;
  248.     CFragContainerID = ^LONGINT;
  249.     CFragContextID = ^LONGINT;
  250.     CFragLoadOptions                    = UInt32;
  251.  
  252. CONST
  253.     kLoadCFrag                    = $0001;                        {  Try to use existing copy, load if not found. }
  254.     kFindCFrag                    = $0002;                        {  Try find an existing copy, don't load if not found. }
  255.     kPrivateCFragCopy            = $0005;                        {  Load a new private copy. }
  256.  
  257.     kUnresolvedCFragSymbolAddress = 0;
  258.  
  259.  
  260. TYPE
  261.     CFragSymbolClass                    = UInt8;
  262.  
  263. CONST
  264.     kCodeCFragSymbol            = 0;
  265.     kDataCFragSymbol            = 1;
  266.     kTVectorCFragSymbol            = 2;
  267.     kTOCCFragSymbol                = 3;
  268.     kGlueCFragSymbol            = 4;
  269.  
  270. {$ENDC}
  271. {
  272.  ß
  273.  ===========================================================================================
  274.  System 7 Services (Deprecated in System 8)
  275.  ==========================================
  276. }
  277. {$IFC FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED }
  278. {
  279.  ---------------------------------------------------------------------------------
  280.  These declarations are for System 7 and the System 8 cooperative environment, but
  281.  should be avoided under System 8.  Better alternatives exist for System 8.
  282. }
  283. FUNCTION GetSharedLibrary(libName: Str63; archType: CFragArchitecture; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Ptr; VAR errMessage: Str255): OSErr;
  284.     {$IFC NOT GENERATINGCFM}
  285.     INLINE $3F3C, $0001, $AA5A;
  286.     {$ENDC}
  287. FUNCTION GetDiskFragment({CONST}VAR fileSpec: FSSpec; offset: UInt32; length: UInt32; fragName: Str63; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Ptr; VAR errMessage: Str255): OSErr;
  288.     {$IFC NOT GENERATINGCFM}
  289.     INLINE $3F3C, $0002, $AA5A;
  290.     {$ENDC}
  291. FUNCTION GetMemFragment(memAddr: UNIV Ptr; length: UInt32; fragName: Str63; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: Ptr; VAR errMessage: Str255): OSErr;
  292.     {$IFC NOT GENERATINGCFM}
  293.     INLINE $3F3C, $0003, $AA5A;
  294.     {$ENDC}
  295. FUNCTION CloseConnection(VAR connID: CFragConnectionID): OSErr;
  296.     {$IFC NOT GENERATINGCFM}
  297.     INLINE $3F3C, $0004, $AA5A;
  298.     {$ENDC}
  299. FUNCTION FindSymbol(connID: CFragConnectionID; symName: Str255; VAR symAddr: Ptr; VAR symClass: CFragSymbolClass): OSErr;
  300.     {$IFC NOT GENERATINGCFM}
  301.     INLINE $3F3C, $0005, $AA5A;
  302.     {$ENDC}
  303. FUNCTION CountSymbols(connID: CFragConnectionID; VAR symCount: LONGINT): OSErr;
  304.     {$IFC NOT GENERATINGCFM}
  305.     INLINE $3F3C, $0006, $AA5A;
  306.     {$ENDC}
  307. FUNCTION GetIndSymbol(connID: CFragConnectionID; symIndex: LONGINT; VAR symName: Str255; VAR symAddr: Ptr; VAR symClass: CFragSymbolClass): OSErr;
  308.     {$IFC NOT GENERATINGCFM}
  309.     INLINE $3F3C, $0007, $AA5A;
  310.     {$ENDC}
  311. {$ENDC}
  312. {
  313.  ß
  314.  ===========================================================================================
  315.  System 8 Services (Not available in System 7)
  316.  =============================================
  317. }
  318. {$IFC FOR_SYSTEM8_PREEMPTIVE }
  319. {
  320.  ---------------------------------------------------------------------------------
  321.  These declarations are for all System 8 execution environments, but not System 7.
  322. }
  323.  
  324. CONST
  325.     kPatchCFragUpdateLevel        = 255;
  326.  
  327.     kByteStreamCFragLocator        = 3;
  328.     kNamedFragmentCFragLocator    = 4;
  329.  
  330.     kNamedLibraryCFragLocator    = 4;                            {  !!! Remove in D12! }
  331.  
  332.     kPrivilegedCFragMask        = $0010;                        {  ! May be removed in the future! }
  333.     kResidentCFragMask            = $0020;                        {  ! May be removed in the future! }
  334.     kTreatCFragAsLibraryMask    = $0040;                        {  Used in GetXyzFragment to recognize by name too. }
  335.  
  336.     kPrivilegedCFragFlag        = $0010;                        {  !!! Remove in D12! }
  337.     kResidentCFragFlag            = $0020;                        {  !!! Remove in D12! }
  338.  
  339.     kMainCFragSymbolIndex        = -1;
  340.     kInitCFragSymbolIndex        = -2;
  341.     kTermCFragSymbolIndex        = -3;
  342.  
  343.  
  344. TYPE
  345.     CFragRegisteredFileInfoPtr = ^CFragRegisteredFileInfo;
  346.     CFragRegisteredFileInfo = RECORD
  347.         fileRef:                FSObjectRef;
  348.         fileType:                OSType;
  349.         nestingDepth:            ItemCount;
  350.     END;
  351.  
  352.  
  353. CONST
  354.     kCFragRegisteredFileInfoVersion = $00010001;
  355.  
  356.  
  357. TYPE
  358.     CFragCompatibility                    = UInt8;
  359.  
  360. CONST
  361.     CFragBothCompatible            = 0;
  362.     CFragClientTooOld            = 1;
  363.     CFragProviderTooOld            = 2;
  364.  
  365.  
  366. TYPE
  367.     CFragShortVersionPair                = UInt32;
  368. FUNCTION CFragCheckCompatibility(clientPreferredVersion: UInt32; clientOldImpVersion: UInt32; providerCurrentVersion: UInt32; providerOldDefVersion: UInt32): ByteParameter; C;
  369. FUNCTION CFragCheckShortCompatibility(clientVersions: UInt32; providerVersions: UInt32): ByteParameter; C;
  370. FUNCTION CFragHasFileLocation(where: ByteParameter): BOOLEAN; C;
  371. FUNCTION CFragHasUnresolvedImports(connID: CFragConnectionID): BOOLEAN; C;
  372. FUNCTION CFragPrepareNamedFragment(fragName: Str63; usage: ByteParameter; archType: CFragArchitecture; preferredVersion: CFragVersionNumber; oldestVersion: CFragVersionNumber; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: LogicalAddress; optErrMsg: TextObject): OSStatus; C;
  373. FUNCTION CFragPrepareFromDiskFork(fileSpec: FSObjectRef; forkTag: FSForkType; forkInstance: ItemCount; offset: ByteCount; length: ByteCount; fragName: Str63; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: LogicalAddress; optErrMsg: TextObject): OSStatus; C;
  374. FUNCTION CFragPrepareFromMemory(fragAddr: LogicalAddress; length: ByteCount; fragName: Str63; loadFlags: CFragLoadOptions; VAR connID: CFragConnectionID; VAR mainAddr: LogicalAddress; optErrMsg: TextObject): OSStatus; C;
  375. FUNCTION CFragCloseConnection(VAR connID: CFragConnectionID): OSStatus; C;
  376. FUNCTION CFragFindNamedSymbol(connID: CFragConnectionID; symName: Str255; VAR symAddr: LogicalAddress; VAR symClass: CFragSymbolClass): OSStatus; C;
  377. FUNCTION CFragCountSymbols(connID: CFragConnectionID; VAR symCount: ItemCount): OSStatus; C;
  378. FUNCTION CFragGetIndexedSymbol(connID: CFragConnectionID; symIndex: SInt32; VAR symName: Str255; VAR symAddr: LogicalAddress; VAR symClass: CFragSymbolClass): OSStatus; C;
  379. FUNCTION CFragGetFileSpec(connectionID: CFragConnectionID; VAR fileSpec: FSObjectRef): OSStatus; C;
  380. FUNCTION CFragGetFragmentName(connectionID: CFragConnectionID; VAR name: Str63): OSStatus; C;
  381. FUNCTION CFragRegisterFileFragments(processID: KernelProcessID; fileSpec: FSObjectRef; fileType: OSType; nestingDepth: ItemCount): OSStatus; C;
  382. FUNCTION CFragUnregisterFileFragments(processID: KernelProcessID; fileSpec: FSObjectRef; fileType: OSType; nestingDepth: ItemCount): OSStatus; C;
  383. FUNCTION CFragGetRegisteredFiles(processID: KernelProcessID; requestedCount: ItemCount; VAR totalCount: ItemCount; infoVersion: PBVersion; VAR registeredFiles: CFragRegisteredFileInfo): OSStatus; C;
  384. {$ENDC}
  385. {
  386.  ß
  387.  ===========================================================================================
  388.  Initialization & Termination Routines
  389.  =====================================
  390.  -----------------------------------------------------------------------------------------
  391.  A fragment's initialization and termination routines are called when a new incarnation of
  392.  the fragment is created or destroyed, respectively.  Exactly when this occurs depends on
  393.  what kinds of section sharing the fragment has and how the fragment is prepared.  Import
  394.  libraries have at most one incarnation per process.  Fragments prepared with option
  395.  kPrivateCFragCopy may have many incarnations per process.
  396.  The initialization function is passed a pointer to an initialization information structure
  397.  and returns an OSErr.  If an initialization function returns a non-zero value the entire
  398.  closure of which it is a part fails.  The CFragInitBlock type has different visible parts
  399.  under System 7 and System 8, but is of course the same internally.  The C prototype for an
  400.  initialization function is:
  401.         pascal OSErr    CFragInitFunction    ( const CFragInitBlock *    initBlock );
  402.  The termination procedure takes no parameters and returns nothing.  The C prototype for a
  403.  termination procedure is:
  404.         pascal void        CFragTermProcedure    ( void );
  405. }
  406. {$IFC FOR_OPAQUE_SYSTEM_DATA_STRUCTURES }
  407. {
  408.  --------------------------------------------------------------------------------------
  409.  These declarations are the preferred form for System 8, hiding implementation details.
  410. }
  411.  
  412. TYPE
  413.     CFragOpaqueInitBlockPtr = ^CFragOpaqueInitBlock;
  414.     CFragOpaqueInitBlock = RECORD
  415.         processID:                KernelProcessID;
  416.         closureID:                CFragClosureID;
  417.         connectionID:            CFragConnectionID;
  418.         reservedA:                ARRAY [0..7] OF UInt32;
  419.     END;
  420.  
  421.     CFragInitBlock                        = CFragOpaqueInitBlock;
  422.     CFragInitBlockPtr                     = ^CFragInitBlock;
  423. {$ELSEC}
  424. {
  425.  --------------------------------------------------------------------------------------
  426.  These declarations are for System 7.  They may be used in System 8 but expose details.
  427. }
  428.  
  429. TYPE
  430.     CFragSystem7MemoryLocatorPtr = ^CFragSystem7MemoryLocator;
  431.     CFragSystem7MemoryLocator = RECORD
  432.         address:                LogicalAddress;
  433.         length:                    UInt32;
  434.         inPlace:                BOOLEAN;
  435.         reservedA:                SInt8;                                    {  ! Must be zero! }
  436.         reservedB:                UInt16;                                    {  ! Must be zero! }
  437.     END;
  438.  
  439.     CFragSystem7DiskFlatLocatorPtr = ^CFragSystem7DiskFlatLocator;
  440.     CFragSystem7DiskFlatLocator = RECORD
  441.         fileSpec:                FSSpecPtr;
  442.         offset:                    UInt32;
  443.         length:                    UInt32;
  444.     END;
  445.  
  446. {  ! This must have a file specification at the same offset as a disk flat locator! }
  447.     CFragSystem7SegmentedLocatorPtr = ^CFragSystem7SegmentedLocator;
  448.     CFragSystem7SegmentedLocator = RECORD
  449.         fileSpec:                FSSpecPtr;
  450.         rsrcType:                OSType;
  451.         rsrcID:                    SInt16;
  452.         reservedA:                UInt16;                                    {  ! Must be zero! }
  453.     END;
  454.  
  455.     CFragSystem7LocatorPtr = ^CFragSystem7Locator;
  456.     CFragSystem7Locator = RECORD
  457.         where:                    SInt32;
  458.         CASE INTEGER OF
  459.         0: (
  460.             onDisk:                CFragSystem7DiskFlatLocator;
  461.             );
  462.         1: (
  463.             inMem:                CFragSystem7MemoryLocator;
  464.             );
  465.         2: (
  466.             inSegs:                CFragSystem7SegmentedLocator;
  467.             );
  468.     END;
  469.  
  470.     CFragSystem7InitBlockPtr = ^CFragSystem7InitBlock;
  471.     CFragSystem7InitBlock = RECORD
  472.         contextID:                CFragContextID;
  473.         closureID:                CFragClosureID;
  474.         connectionID:            CFragConnectionID;
  475.         fragLocator:            CFragSystem7Locator;
  476.         libName:                StringPtr;
  477.         reservedA:                UInt32;                                    {  ! Must be zero! }
  478.     END;
  479.  
  480.     CFragInitBlock                        = CFragSystem7InitBlock;
  481.     CFragInitBlockPtr                     = ^CFragInitBlock;
  482. {$ENDC}
  483.     CFragInitFunction = ProcPtr;  { FUNCTION CFragInitFunction((CONST)VAR initBlock: CFragInitBlock): OSErr; C; }
  484.  
  485.     CFragTermProcedure = ProcPtr;  { PROCEDURE CFragTermProcedure; C; }
  486.  
  487. {
  488.  ß
  489.  ===========================================================================================
  490.  Old Name Spellings
  491.  ==================
  492.  -------------------------------------------------------------------------------------------
  493.  We've tried to reduce the risk of name collisions in the future by introducing the phrase
  494.  "CFrag" into constant and type names.  The old names are defined below in terms of the new.
  495. }
  496. {$IFC OLDROUTINENAMES }
  497.     ConnectionID                        = CFragConnectionID;
  498.     LoadFlags                            = CFragLoadOptions;
  499.     SymClass                            = CFragSymbolClass;
  500.     InitBlock                            = CFragInitBlock;
  501.     InitBlockPtr                         = ^InitBlock;
  502. {$IFC NOT FOR_OPAQUE_SYSTEM_DATA_STRUCTURES }
  503.     MemFragment                            = CFragSystem7MemoryLocator;
  504.     MemFragmentPtr                         = ^MemFragment;
  505.     DiskFragment                        = CFragSystem7DiskFlatLocator;
  506.     DiskFragmentPtr                     = ^DiskFragment;
  507.     SegmentedFragment                    = CFragSystem7SegmentedLocator;
  508.     SegmentedFragmentPtr                 = ^SegmentedFragment;
  509.     FragmentLocator                        = CFragSystem7Locator;
  510.     FragmentLocatorPtr                     = ^FragmentLocator;
  511.     CFragHFSMemoryLocator                = CFragSystem7MemoryLocator;
  512.     CFragHFSMemoryLocatorPtr             = ^CFragHFSMemoryLocator;
  513.     CFragHFSDiskFlatLocator                = CFragSystem7DiskFlatLocator;
  514.     CFragHFSDiskFlatLocatorPtr             = ^CFragHFSDiskFlatLocator;
  515.     CFragHFSSegmentedLocator            = CFragSystem7SegmentedLocator;
  516.     CFragHFSSegmentedLocatorPtr         = ^CFragHFSSegmentedLocator;
  517.     CFragHFSLocator                        = CFragSystem7Locator;
  518.     CFragHFSLocatorPtr                     = ^CFragHFSLocator;
  519. {$ENDC}
  520.  
  521. CONST
  522.     kPowerPCArch                = 'pwpc';
  523.     kMotorola68KArch            = 'm68k';
  524.     kAnyArchType                = $3F3F3F3F;
  525.     kNoLibName                    = 0;
  526.     kNoConnectionID                = 0;
  527.     kLoadLib                    = $0001;
  528.     kFindLib                    = $0002;
  529.     kNewCFragCopy                = $0005;
  530.     kLoadNewCopy                = $0005;
  531.     kUseInPlace                    = $80;
  532.     kCodeSym                    = 0;
  533.     kDataSym                    = 1;
  534.     kTVectSym                    = 2;
  535.     kTOCSym                        = 3;
  536.     kGlueSym                    = 4;
  537.     kInMem                        = 0;
  538.     kOnDiskFlat                    = 1;
  539.     kOnDiskSegmented            = 2;
  540.     kIsLib                        = 0;
  541.     kIsApp                        = 1;
  542.     kIsDropIn                    = 2;
  543.     kFullLib                    = 0;
  544.     kUpdateLib                    = 1;
  545.     kWholeFork                    = 0;
  546.     kCFMRsrcType                = 'cfrg';
  547.     kCFMRsrcID                    = 0;
  548.     kSHLBFileType                = 'shlb';
  549.     kUnresolvedSymbolAddress    = 0;
  550.  
  551.     kPowerPC                    = 'pwpc';
  552.     kMotorola68K                = 'm68k';
  553.  
  554. {$ENDC}
  555. {$ALIGN RESET}
  556. {$POP}
  557.  
  558. {$SETC UsingIncludes := CodeFragmentsIncludes}
  559.  
  560. {$ENDC} {__CODEFRAGMENTS__}
  561.  
  562. {$IFC NOT UsingIncludes}
  563.  END.
  564. {$ENDC}
  565.